home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
progtool
/
modula2
/
module
/
bestellu.mod
< prev
next >
Wrap
Text File
|
1995-11-25
|
9KB
|
261 lines
IMPLEMENTATION MODULE Bestellungen;
FROM BlRscInc IMPORT
BESTLDIA , (* TREE *) BB1, BB2, BB3, BB4, BB5,
BB6, BB7, LB1, LB2, LB3, LB4, LB5,
LB6 , LB7, BK1 , BK2, BK3, BK4, BK5,
BK6, BK7, LK1, LK2, LK3, LK4, LK5,
LK6 , LK7 , CNCLBEST, OKBESTLG ,BSDTITEL,SCHULDEN, (* OBJECTs in TREE #5 *)
EKB1, EKB2, EKB3, EKB4, EKB5, EKB6, EKB7, EKL1 ,
EKL2, EKL3, EKL4, EKL5, EKL6, EKL7 ; (* OBJECTs in TREE #3 *)
FROM EasyDialog IMPORT DoDialog,GetText,SetText,SetObjectFlags;
FROM ConvertStr IMPORT StrToInt,IntToStr,LongIntToStr;
FROM Strings IMPORT IsEmptyStr,EqualStr,LeftStr,SubStr,ClearStr,Length,
Concat;
FROM InOut IMPORT WriteString,WriteLn,WriteInt,Done,ReadInt,
OpenOutput,CloseOutput;
FROM LongInOut IMPORT WriteLongInt;
FROM SYSTEM IMPORT ADDRESS, VAL ;
FROM AES IMPORT FormAlert,ResourceGetAddr;
FROM PreisErfassung IMPORT EinKaufsPreis, EKPreis,GTString;
VAR BestllDiaAddr : ADDRESS;
IdxTable : ARRAY[EKB1..EKL7] OF RECORD
TextIdx,
MengenIdx :INTEGER;
END(*RECORD*);
SchuldenBeimFax : LONGINT;
k : INTEGER [EKB1..EKL7];
TYPE Art =(Bestelldialog,Abrechnungsdialog);
(*************************************************************************)
PROCEDURE ComputeBestellung;
BEGIN
SchuldenBeimFax:=SchuldenBeimFax+
VAL(LONGINT,(EinKaufsPreis[k].Preis * (EinKaufsPreis[k].NeuBezogeneKaesten+EinKaufsPreis[k].ZuBezahlendeKaesten)));
END ComputeBestellung;
PROCEDURE SchuldenAnFax():LONGINT;
BEGIN
SchuldenBeimFax:=0D;
FOR k:=EKB1 TO EKL7 DO
ComputeBestellung;
END(*FOR*);
RETURN SchuldenBeimFax;
END SchuldenAnFax;
PROCEDURE DruckOK():BOOLEAN;
VAR s: ARRAY [0..127] OF CHAR;
formret : INTEGER;
BEGIN
s :='[2][Druck in Ordnung?|Ja = Druck OK|Nein = Druck wiederholen][ Ja | Nein ]';
formret:=FormAlert(1,s);
RETURN formret=1
END DruckOK;
(*************************************************************************)
PROCEDURE B2str(VAR MengenStr: ARRAY OF CHAR);
VAR HilfsStr: ARRAY [0..2] OF CHAR;
OK : BOOLEAN;
BEGIN
IntToStr(EinKaufsPreis[k].NeuBezogeneKaesten,3,HilfsStr,OK);
MengenStr[0]:=HilfsStr[1]; MengenStr[1]:=HilfsStr[2];
END B2str;
PROCEDURE A2str(VAR MengenStr : ARRAY OF CHAR);
VAR HilfsStr: ARRAY [0..2] OF CHAR;
OK : BOOLEAN;
BEGIN
IntToStr(EinKaufsPreis[k].NeuBezogeneKaesten+EinKaufsPreis[k].ZuBezahlendeKaesten,3,HilfsStr,OK);
MengenStr[0]:=HilfsStr[1]; MengenStr[1]:=HilfsStr[2];
ComputeBestellung;
END A2str;
PROCEDURE ZeichneDialog(welchen:Art);
VAR MengenStr: ARRAY [0..2] OF CHAR;
OK : BOOLEAN;
WertZuStr: PROCEDURE (VAR ARRAY OF CHAR);
i : INTEGER;
SchuldenStr1:ARRAY [0..6] OF CHAR;
SchuldenStr2:ARRAY [0..7] OF CHAR;
TitelStr: ARRAY [0..21] OF CHAR;
BEGIN
IF welchen=Bestelldialog THEN
TitelStr:='Vom Fax geliefert :';
SetText(BSDTITEL,BestllDiaAddr,TitelStr);
SetObjectFlags(SCHULDEN,BestllDiaAddr,80H);
WertZuStr:=B2str
ELSE
TitelStr:='Abbrechnung mit Fax :';
SetText(BSDTITEL,BestllDiaAddr,TitelStr);
SetObjectFlags(SCHULDEN,BestllDiaAddr,08H);
WertZuStr:=A2str
END(*IF*);
FOR k:=EKB1 TO EKL7 DO
IF EinKaufsPreis[k].Preis#0 THEN
SetText(IdxTable[k].TextIdx ,BestllDiaAddr,EinKaufsPreis[k].Getraenk);
WertZuStr(MengenStr);
SetText(IdxTable[k].MengenIdx ,BestllDiaAddr,MengenStr);
SetObjectFlags(IdxTable[k].MengenIdx ,BestllDiaAddr,8);
ELSIF EinKaufsPreis[k].TreeIndex#0 THEN
SetObjectFlags(IdxTable[k].MengenIdx ,BestllDiaAddr,0);
END(*IF*);
END(*FOR*);
IF welchen=Abrechnungsdialog THEN
LongIntToStr(SchuldenBeimFax,7,SchuldenStr2,OK);
(*SchuldenBeimFax:=0D;*)
FOR i:=0 TO 6 DO
SchuldenStr1[i]:= SchuldenStr2[i+1]
END(*FOR*);
SetText(SCHULDEN,BestllDiaAddr,SchuldenStr1);
END(*IF*);
END ZeichneDialog;
PROCEDURE Abrechnung;
VAR DiaReturn : INTEGER;
OK : BOOLEAN;
Bezahlt : INTEGER;
MengenStr : ARRAY[0..1] OF CHAR;
(***************)
GezahltAnFax : LONGINT;
(************)
PROCEDURE WriteAbbr;
BEGIN
WriteInt(Bezahlt,4); WriteString(' * ');
WriteString(EinKaufsPreis[k].Getraenk);
WriteInt((Bezahlt*EinKaufsPreis[k].Preis) DIV 100,5);WriteString('.');
WriteInt((Bezahlt*EinKaufsPreis[k].Preis) MOD 100,2);WriteString(' DM');WriteLn;
END WriteAbbr;
BEGIN
SchuldenBeimFax:=0D;
MengenStr:='00';
ResourceGetAddr(0,BESTLDIA,BestllDiaAddr);
ZeichneDialog(Abrechnungsdialog);
DiaReturn:=DoDialog(BestllDiaAddr,BK1);
GekaufteBierFlaschen:=0; GekaufteLimoFlaschen:=0;
AusgabenFuerBierKauf:=0D; AusgabenFuerLimoKauf:=0D;
GezahltAnFax :=0D;
IF DiaReturn=OKBESTLG THEN
REPEAT
OpenOutput('PRN:');
WriteLn;
FOR k:=EKB1 TO EKB7 DO
IF EinKaufsPreis[k].Preis#0 THEN
GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
StrToInt(MengenStr,Bezahlt,OK);
GezahltAnFax:=GezahltAnFax+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
AusgabenFuerBierKauf:= AusgabenFuerBierKauf+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
GekaufteBierFlaschen:=GekaufteBierFlaschen+(Bezahlt*EinKaufsPreis[k].FlaschenProKasten);
WriteAbbr;
EinKaufsPreis[k].ZuBezahlendeKaesten:= EinKaufsPreis[k].ZuBezahlendeKaesten-Bezahlt;
END(*IF*);
END(*FOR*);
FOR k:=EKL1 TO EKL7 DO
IF EinKaufsPreis[k].Preis#0 THEN
GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
StrToInt(MengenStr,Bezahlt,OK);
GezahltAnFax:=GezahltAnFax+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
AusgabenFuerLimoKauf:=AusgabenFuerLimoKauf+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
GekaufteLimoFlaschen:= GekaufteLimoFlaschen +(Bezahlt*EinKaufsPreis[k].FlaschenProKasten);
WriteAbbr;
EinKaufsPreis[k].ZuBezahlendeKaesten:= EinKaufsPreis[k].ZuBezahlendeKaesten-Bezahlt;
END(*IF*);
END(*FOR*);
SchuldenBeimFax:=SchuldenBeimFax-GezahltAnFax;
WriteString(' Gesammtbetrag: ');
WriteLongInt(GezahltAnFax DIV 100D,6);WriteString('.');
WriteLongInt(GezahltAnFax MOD 100D,2);WriteString(' DM ');WriteLn;
WriteString(' Schulden: ');
WriteLongInt(SchuldenBeimFax DIV 100D,6);WriteString('.');
WriteLongInt(SchuldenBeimFax MOD 100D,2);WriteString(' DM ');WriteLn;
CloseOutput;
UNTIL DruckOK();
END(*IF*);
END Abrechnung;
PROCEDURE Bestellung;
VAR DiaReturn : INTEGER;
OK : BOOLEAN;
MengenStr : ARRAY[0..1] OF CHAR;
BEGIN
MengenStr:='00';
ResourceGetAddr(0,BESTLDIA,BestllDiaAddr);
ZeichneDialog(Bestelldialog);
DiaReturn:=DoDialog(BestllDiaAddr,BK1);
IF DiaReturn=OKBESTLG THEN
FOR k:=EKB1 TO EKL7 DO
IF EinKaufsPreis[k].Preis#0 THEN
GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
StrToInt(MengenStr,EinKaufsPreis[k].NeuBezogeneKaesten,OK);
END(*IF*);
END(*FOR*);
END(*IF*);
END Bestellung;
BEGIN
SchuldenBeimFax:=0D;
AusgabenFuerBierKauf:=0D;
AusgabenFuerLimoKauf:=0D;
GekaufteBierFlaschen:=0;
GekaufteLimoFlaschen:=0;
(***********************Make Index Table********************)
(* Um vom Index auf die dazugehörigen Editfelder zu kommen *)
(***********************************************************)
IdxTable[EKB1].TextIdx :=BB1;
IdxTable[EKB1].MengenIdx:=BK1;
IdxTable[EKB2].TextIdx :=BB2;
IdxTable[EKB2].MengenIdx:=BK2;
IdxTable[EKB3].TextIdx :=BB3;
IdxTable[EKB3].MengenIdx:=BK3;
IdxTable[EKB4].TextIdx :=BB4;
IdxTable[EKB4].MengenIdx:=BK4;
IdxTable[EKB5].TextIdx :=BB5;
IdxTable[EKB5].MengenIdx:=BK5;
IdxTable[EKB6].TextIdx :=BB6;
IdxTable[EKB6].MengenIdx:=BK6;
IdxTable[EKB7].TextIdx :=BB7;
IdxTable[EKB7].MengenIdx:=BK7;
IdxTable[EKL1].TextIdx :=LB1;
IdxTable[EKL1].MengenIdx:=LK1;
IdxTable[EKL2].TextIdx :=LB2;
IdxTable[EKL2].MengenIdx:=LK2;
IdxTable[EKL3].TextIdx :=LB3;
IdxTable[EKL3].MengenIdx:=LK3;
IdxTable[EKL4].TextIdx :=LB4;
IdxTable[EKL4].MengenIdx:=LK4;
IdxTable[EKL5].TextIdx :=LB5;
IdxTable[EKL5].MengenIdx:=LK5;
IdxTable[EKL6].TextIdx :=LB6;
IdxTable[EKL6].MengenIdx:=LK6;
IdxTable[EKL7].TextIdx :=LB7;
IdxTable[EKL7].MengenIdx:=LK7;
END Bestellungen.